package cms.api;
import cms.model.Announcement;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import utils.sql.PageVo;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * Created by Roney on 2016/10/13.
 */
public interface AnnouncementApi {
//    /**
//     * 获取公告信息
//     * 需拿取MemberReadAnnouncement  isReadFlag
//     * 根据MemberReadAnnouncement是否有数据，判读公告是否已读
//     * @param adminRoleId
//     * @return
//     */
//    public List<AnnouncementVo> getList(String adminRoleId,Boolean isDelete);


    //条件查询公告信息，并分页展示 条件：String title（主题）, Date startDate（发布起始日期）, Date endDate（发布结束日期）
    public Page<Announcement> getList(String title, Date startDate, Date endDate, Pageable pageable);

    //查询全部公告信息，不分页展示
    public List<Announcement> getList();

    //通过主键ID查询唯一的公告信息
    public Announcement getAnnouncement(String id);

    //查询全部公告信息，分页展示
    public Page<Announcement> getList(Pageable pageable);

    //条件查询公告信息，并分页展示 条件：String title（主题）
    public Page<Announcement> getList(String title,Pageable pageable);

    //条件查询公告信息，并分页展示 条件： Date startDate（发布起始日期）, Date endDate（发布结束日期）
    public Page<Announcement> getList(Date startDate, Date endDate,Pageable pageable);

    //保存公告信息，返回Object
    public String saveAnnouncement(Announcement announcement);

//    //修改公告信息，返回Object
//    public Object updateAnnouncement(Announcement announcement);

    //通过主键ID删除公告信息，返回Map集合
    public Map deleteAnnouncement(String id);

    public PageVo getUserZAnnouncement(Pageable pageable, String id,String title,String orgCode);

    //根据companyId查询Announcement集合
    public List<Announcement> getAnnouncementsByCompany(Integer companyLevel, boolean isDelete);

    /**
     * 根据集团层级查询首页展示公告
     * @param companyLevel
     * @param showNum
     * @param orgCode 机构代码
     * @return
     */
    public List<Announcement> getShowAnnouncement(Integer companyLevel,Integer showNum,String orgCode);

    public String toString();
}
